#!/bin/bash

# 部署脚本 - 北京四中回忆档案系统
# 服务器: 47.103.78.83
# 注意：假设 Node.js 和 npm 已安装

echo "开始部署北京四中回忆档案系统..."

# 检查 Node.js 和 npm 是否已安装
echo "检查环境..."
node --version || { echo "错误: 未找到 Node.js"; exit 1; }
npm --version || { echo "错误: 未找到 npm"; exit 1; }

# 1. 安装 PM2 进程管理器
echo "安装 PM2..."
sudo npm install -g pm2 || npm install -g pm2

# 2. 创建项目目录
echo "设置项目目录..."
sudo mkdir -p /var/www/wayback-archive
sudo chown -R $USER:$USER /var/www/wayback-archive

# 如果当前不在项目目录，切换到项目目录
if [ "$(pwd)" != "/var/www/wayback-archive" ]; then
    echo "当前在 $(pwd)，需要将文件复制到 /var/www/wayback-archive"
    echo "请手动运行以下命令："
    echo "cp -r $(pwd)/* /var/www/wayback-archive/"
    echo "然后切换到 /var/www/wayback-archive 并重新运行此脚本"
    exit 1
fi

# 3. 安装项目依赖
echo "安装项目依赖..."
npm install

# 4. 创建必要目录和权限
echo "创建上传目录..."
mkdir -p uploads
mkdir -p /var/log/wayback-archive 2>/dev/null || sudo mkdir -p /var/log/wayback-archive
chmod 755 uploads

# 5. 配置环境文件
echo "配置环境变量..."
if [ -f ".env.production" ] && [ ! -f ".env" ]; then
    cp .env.production .env
    echo "已复制 .env.production 到 .env"
fi

# 6. 配置防火墙
echo "配置防火墙..."
sudo ufw allow 5001 2>/dev/null || echo "防火墙配置跳过（可能需要手动配置）"
sudo ufw allow 80 2>/dev/null
sudo ufw allow 443 2>/dev/null

# 7. 停止现有应用
echo "停止现有应用..."
pm2 delete wayback-archive 2>/dev/null || echo "没有运行的应用需要停止"

# 8. 启动应用
echo "启动应用..."
if [ -f "ecosystem.config.js" ]; then
    pm2 start ecosystem.config.js --env production
else
    pm2 start server.js --name "wayback-archive" --env production
fi

# 9. 设置开机自启
echo "设置开机自启..."
pm2 startup
pm2 save

echo ""
echo "🎉 部署完成！"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "应用地址: http://47.103.78.83:5001"
echo "老物件页面: http://47.103.78.83:5001/vintage-objects.html"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
echo "📋 管理命令:"
echo "  pm2 status                 - 查看应用状态"
echo "  pm2 logs wayback-archive   - 查看实时日志"
echo "  pm2 restart wayback-archive - 重启应用"
echo "  pm2 stop wayback-archive   - 停止应用"
echo "  pm2 monit                  - 监控面板"
echo ""